<?php
/**
 * 熵巡 - 企业级氚云OpenAPI数据管理平台
 * 开发归属 Alyr.net
 * 氚云附件代理服务 - 代理下载氚云附件文件
 * 尊重劳动成果是一种美德
 */

require_once 'h3yun_image.php';

// 日志函数已禁用
// function writeAttachmentLog($message, $level = 'INFO') {}

// 获取配置
$config = require '../config.php';

// 获取附件ID参数
$attachmentId = $_GET['id'] ?? '';
// 获取可选的自定义文件名参数（从前端传递）
$customName = isset($_GET['name']) ? urldecode($_GET['name']) : '';

// 日志已禁用
// writeAttachmentLog("接收到的name参数: " . var_export($customName, true), 'DEBUG');

if (empty($attachmentId)) {
    // writeAttachmentLog("错误: 缺少附件ID参数", 'WARNING');
    http_response_code(400);
    echo '缺少附件ID参数';
    exit;
}

// writeAttachmentLog("附件下载请求: {$attachmentId}");

try {
    // 创建氚云图片处理器（同样适用于附件）
    $imageHandler = getH3yunImageHandler($config);
    
    // 下载附件
    $result = $imageHandler->downloadAttachment($attachmentId);
    
    if ($result['success']) {
        // 直接使用氚云返回的文件名和内容类型
        $filename = $result['filename'] ?? 'attachment_' . substr($attachmentId, 0, 8);
        $contentType = $result['content_type'] ?? 'application/octet-stream';
        
        // 日志已禁用
        // writeAttachmentLog("附件下载成功: {$attachmentId}, 文件: {$filename}, 大小: " . $result['size'] . " bytes");
        // writeAttachmentLog("响应头信息: " . str_replace("\n", " | ", $result['debug_header']), 'DEBUG');
        
        // 设置响应头
        header('Content-Type: ' . $contentType);
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        header('Cache-Control: public, max-age=3600');
        header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT');
        header('Content-Length: ' . $result['size']);
        
        // 输出附件数据
        echo $result['data'];
    } else {
        // writeAttachmentLog("附件不存在: {$attachmentId} - " . $result['message'], 'WARNING');
        // 返回错误信息
        http_response_code(404);
        header('Content-Type: text/plain; charset=utf-8');
        echo '附件不存在: ' . $result['message'];
    }
    
} catch (Exception $e) {
    $errorMsg = $e->getMessage();
    // writeAttachmentLog("服务器错误: {$attachmentId} - {$errorMsg}", 'ERROR');
    http_response_code(500);
    header('Content-Type: text/plain; charset=utf-8');
    echo '服务器错误: ' . $errorMsg;
}
?>